package top.yunmouren.areamusic.music;


import top.yunmouren.areamusic.config.Priority;

public class MusicTag {
    private String musicId;
    private String musicUUID;
    private String musicURL;
    private Priority priority;
    private String fromWorld;
    private String areaUUID;
    private Long expiredTime;

    public static MusicTagBuilder builder() {
        return new MusicTagBuilder();
    }

    public String getMusicId() {
        return this.musicId;
    }

    public String getMusicUUID() {
        return this.musicUUID;
    }

    public String getMusicURL() {
        return this.musicURL;
    }

    public Priority getPriority() {
        return this.priority;
    }

    public String getFromWorld() {
        return this.fromWorld;
    }

    public String getAreaUUID() {
        return this.areaUUID;
    }

    public Long getExpiredTime() {
        return this.expiredTime;
    }

    public void setMusicId(String musicId) {
        this.musicId = musicId;
    }

    public void setMusicUUID(String musicUUID) {
        this.musicUUID = musicUUID;
    }

    public void setMusicURL(String musicURL) {
        this.musicURL = musicURL;
    }

    public void setPriority(Priority priority) {
        this.priority = priority;
    }

    public void setFromWorld(String fromWorld) {
        this.fromWorld = fromWorld;
    }

    public void setAreaUUID(String areaUUID) {
        this.areaUUID = areaUUID;
    }

    public void setExpiredTime(Long expiredTime) {
        this.expiredTime = expiredTime;
    }

    public boolean equals(Object o) {
        if (o == this) {
            return true;
        } else if (!(o instanceof MusicTag)) {
            return false;
        } else {
            MusicTag other = (MusicTag)o;
            if (!other.canEqual(this)) {
                return false;
            } else {
                label95: {
                    Object this$expiredTime = this.getExpiredTime();
                    Object other$expiredTime = other.getExpiredTime();
                    if (this$expiredTime == null) {
                        if (other$expiredTime == null) {
                            break label95;
                        }
                    } else if (this$expiredTime.equals(other$expiredTime)) {
                        break label95;
                    }

                    return false;
                }

                Object this$musicId = this.getMusicId();
                Object other$musicId = other.getMusicId();
                if (this$musicId == null) {
                    if (other$musicId != null) {
                        return false;
                    }
                } else if (!this$musicId.equals(other$musicId)) {
                    return false;
                }

                Object this$musicUUID = this.getMusicUUID();
                Object other$musicUUID = other.getMusicUUID();
                if (this$musicUUID == null) {
                    if (other$musicUUID != null) {
                        return false;
                    }
                } else if (!this$musicUUID.equals(other$musicUUID)) {
                    return false;
                }

                label74: {
                    Object this$musicURL = this.getMusicURL();
                    Object other$musicURL = other.getMusicURL();
                    if (this$musicURL == null) {
                        if (other$musicURL == null) {
                            break label74;
                        }
                    } else if (this$musicURL.equals(other$musicURL)) {
                        break label74;
                    }

                    return false;
                }

                label67: {
                    Object this$priority = this.getPriority();
                    Object other$priority = other.getPriority();
                    if (this$priority == null) {
                        if (other$priority == null) {
                            break label67;
                        }
                    } else if (this$priority.equals(other$priority)) {
                        break label67;
                    }

                    return false;
                }

                Object this$fromWorld = this.getFromWorld();
                Object other$fromWorld = other.getFromWorld();
                if (this$fromWorld == null) {
                    if (other$fromWorld != null) {
                        return false;
                    }
                } else if (!this$fromWorld.equals(other$fromWorld)) {
                    return false;
                }

                Object this$areaUUID = this.getAreaUUID();
                Object other$areaUUID = other.getAreaUUID();
                if (this$areaUUID == null) {
                    if (other$areaUUID != null) {
                        return false;
                    }
                } else if (!this$areaUUID.equals(other$areaUUID)) {
                    return false;
                }

                return true;
            }
        }
    }

    protected boolean canEqual(Object other) {
        return other instanceof MusicTag;
    }

    public int hashCode() {
        boolean PRIME = true;
        int result = 1;
        Object $expiredTime = this.getExpiredTime();
         result = result * 59 + ($expiredTime == null ? 43 : $expiredTime.hashCode());
        Object $musicId = this.getMusicId();
        result = result * 59 + ($musicId == null ? 43 : $musicId.hashCode());
        Object $musicUUID = this.getMusicUUID();
        result = result * 59 + ($musicUUID == null ? 43 : $musicUUID.hashCode());
        Object $musicURL = this.getMusicURL();
        result = result * 59 + ($musicURL == null ? 43 : $musicURL.hashCode());
        Object $priority = this.getPriority();
        result = result * 59 + ($priority == null ? 43 : $priority.hashCode());
        Object $fromWorld = this.getFromWorld();
        result = result * 59 + ($fromWorld == null ? 43 : $fromWorld.hashCode());
        Object $areaUUID = this.getAreaUUID();
        result = result * 59 + ($areaUUID == null ? 43 : $areaUUID.hashCode());
        return result;
    }

    public MusicTag() {
    }

    public MusicTag(String musicId, String musicUUID, String musicURL, Priority priority, String fromWorld, String areaUUID, Long expiredTime) {
        this.musicId = musicId;
        this.musicUUID = musicUUID;
        this.musicURL = musicURL;
        this.priority = priority;
        this.fromWorld = fromWorld;
        this.areaUUID = areaUUID;
        this.expiredTime = expiredTime;
    }

    public String toString() {
        return "MusicTag(musicId=" + this.getMusicId() + ", musicUUID=" + this.getMusicUUID() + ", musicURL=" + this.getMusicURL() + ", priority=" + this.getPriority() + ", fromWorld=" + this.getFromWorld() + ", areaUUID=" + this.getAreaUUID() + ", expiredTime=" + this.getExpiredTime() + ")";
    }

    public static class MusicTagBuilder {
        private String musicId;
        private String musicUUID;
        private String musicURL;
        private Priority priority;
        private String fromWorld;
        private String areaUUID;
        private Long expiredTime;

        MusicTagBuilder() {
        }

        public MusicTagBuilder musicId(String musicId) {
            this.musicId = musicId;
            return this;
        }

        public MusicTagBuilder musicUUID(String musicUUID) {
            this.musicUUID = musicUUID;
            return this;
        }

        public MusicTagBuilder musicURL(String musicURL) {
            this.musicURL = musicURL;
            return this;
        }

        public MusicTagBuilder priority(Priority priority) {
            this.priority = priority;
            return this;
        }

        public MusicTagBuilder fromWorld(String fromWorld) {
            this.fromWorld = fromWorld;
            return this;
        }

        public MusicTagBuilder areaUUID(String areaUUID) {
            this.areaUUID = areaUUID;
            return this;
        }

        public MusicTagBuilder expiredTime(Long expiredTime) {
            this.expiredTime = expiredTime;
            return this;
        }

        public MusicTag build() {
            return new MusicTag(this.musicId, this.musicUUID, this.musicURL, this.priority, this.fromWorld, this.areaUUID, this.expiredTime);
        }

        public String toString() {
            return "MusicTag.MusicTagBuilder(musicId=" + this.musicId + ", musicUUID=" + this.musicUUID + ", musicURL=" + this.musicURL + ", priority=" + this.priority + ", fromWorld=" + this.fromWorld + ", areaUUID=" + this.areaUUID + ", expiredTime=" + this.expiredTime + ")";
        }
    }
}